void main() {
    // 1、基础语法-变量和数据类型
    // Number : int 、 double
    int sorce = 23;
    double percentage = 0.23;
    // print(sorce);
    // print(percentage);

    // String
    String name = '张三';

    // String 拼接
    print('姓名:$name');
    print('姓名:' + name);

    // 不同类型不可以直接拼接
    print('姓名长度:' + name.length.toString());
    print('姓名长度:${name.length}');

    // Boolean
    bool isOk = true;
 
    // $ 变量运算
    print('$sorce + $percentage = ${sorce + percentage}');



    print('------------------------------------------');
    // 2、基础语法-条件语句
    var salary = 10000;
    if (salary > 2000) {
        print('ok');
    } else if (salary > 1000) {
        print('good');
    } else {
        print('bad');
    }

    // 三元表达式
    print(salary > 2000 ? 'ok1' : 'bad');
    // ?? 三目运算符
    print(salary < 2000 ? 'ok2' : null ?? 'bad');
    var str = null;
    var result = str ?? 'default';
    print(result);


    print('------------------------------------------');
    //3、基础语法-循环语句
    // for
    for (var i = 0; i < 10; i++) {
      if (i % 2 == 0) {
          // print(i); 
      }
    }

    // for-in
    var list = [1, 2, 3, 4, 5];
    for (int i in list) {
        // print(++i);
    }

    // while
    int ponit = 0;
    while (ponit < 10) {
        // print(ponit);
        ponit++;
    }

    // do-while
    ponit = 0;
    do {
        // print(ponit);
        ponit++;
    } while (ponit < 0);

    // break 和 continue
    ponit = 0;
    while (ponit < 10) {
        if (ponit == 5) {
            ponit++;
            continue;
        }
        // print(ponit);
        ponit++;
    }

    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            break;
        }
        // print(i);
    }

    // 指定停止某层循环
    outloop:
    for (int i = 0; i < 10; i++) {
      innerLoop:
        for (int j = 0; j < 10; j++) {
            if (j == 5) {
                break outloop;
            }
            if (j == 3) {
                continue innerLoop;
            }
            print('$i-$j');
        }
    }


    print('------------------------------------------');
    // 4、基础语法-函数
    // 函数
    void hello(int a, int b) {
      print('$a + $b = ${a + b}');
    }
    hello(1, 2);
    // 函数返回值
    int add(int a, int b) {
      return a + b;
    }
    print(add(2, 2));
    // 箭头函数
    add2(int a, int b) => a + b;
    print(add2(2, 3));
    // 可选参数
    hello2(int a, [int b = 0]) {
      print('$a + $b = ${a + b}');
    }
    hello2(1, 2);
    hello2(1);

    // 默认参数和命名参数
    hello3(int a, {int b = 0}) {
      print('$a + $b = ${a + b}');
    }
    hello3(1);
    hello3(1, b: 2);


}